━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
             AudioPlay ver_1.02
                                 author:Halkaze
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

### 目次 ###

・概要
・利用方法
・各モードについて
・更新履歴

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

### 概要 ###

ダウンロードありがとうございます！
こちらは、コードを用いてBGMを再生するための汎用パッチとなっております。

不具合報告などはこちらまでどうぞ
  ブログ ：https://halkaze.fc2.net/
  Twitter：@halkazeMUGEN1

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

### 利用方法 ###

1. キャラクターのdefファイルに
   [AudioPlay]
   dll = (AudioPlay.dllへのパス)
   という記述を追加する。

2. AudioPlay.defを形式に従って用意する。
   詳細はAudioPlay.defおよび、Sampleフォルダを参照ください。

3. DLLCALL.cnsを登録する。

以上。



追記（ver1.01～）

 キャラクターのdefファイルの[AudioPlay]下に
 def = (AudioPlay.defへのパス)
 と指定することで、AudioPlay.dllとは異なるファイル階層に
 AudioPlay.defファイルを配置することが可能となりました。

 また、ここでAudioPlay.def以外の名前を指定することで、
 AudioPlay.defファイルの名称を変更可能となりました。

 なお、def項目を設けなかった場合は、AudioPlay.dllと同じファイル階層に
 "AudioPlay.def"という名前のファイルが存在すると想定して動作します。
 この挙動は、ver1.00におけるAudioPlay.def探索の挙動とは異なる点に
 注意してください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

### 各モードについて ###

・各モード共通の仕様
　・楽曲の再生中に試合が終了した場合（ESCキーでの試合終了、Shift+F4による再試合を含む）
　　強制的に楽曲の再生を中断させます。

　・F4キーによる再試合は、基本的にはラウンド移行時同様に処理されます。


・Auto Play mode
  ・変数不使用でBGMを再生可能なモードです。

　・[Auto]セクションのRoundState項目で設定したRoundStateになった
　　タイミングでBGMの再生を開始します。

　・再生楽曲のLoop項目が-1である場合、楽曲再生終了後同じラウンドの間
　　は別の楽曲を再生し始めることはありません。

　・再生楽曲のFadeOut項目が-1でない場合、RoundState=3になったタイミング
　　で自動的に楽曲にフェードアウトがかかります。

　・ラウンド変更時は通常、楽曲の再生を一旦停止させ、次のラウンドでは
　　始めから曲の再生を開始しますが、
　　・「[Music]セクションが一つのみ存在する」
　　・「[Auto]セクションにてRoundState項目を0に設定している」
　　・「[Music]セクションのFadeOut項目を-1に設定している」
　　のすべてを満たす場合に限り、楽曲の再生を継続させます。

　・複数の楽曲を登録している場合、ラウンドが変わる際に[Auto]セクションの
　　Order設定に基づいて自動的に再生する楽曲を変更します。
　　この際に二ラウンド続けて同じ楽曲が選択される場合がありますが、
　　上記の条件を満たしていない場合には再生の継続はされません。


・Manual Play mode
　・変数を一つ使用して任意のタイミングで楽曲の再生／停止が可能なモードです。

　・[Manual]セクションのType項目および、Index項目にて指定した変数に楽曲の
　　登録番号（何番目の[Music]か、1,2,3,…）をセットすることで、対応する
　　楽曲の再生を開始します。

　・対象変数を0にセットすることで即座に再生を停止させることができますが、
　　再生楽曲のFadeOut項目が-1でない場合、0にセットしたタイミングからフェード
　　アウト処理を開始するため、実際に再生が停止するのはFadeOutで指定した
　　フレームが経過した後となります。

　・基本的にはIntPersistIndex（FloatPersistIndex）設定によるリセットや
　　自分から対象変数を変更しない限りはラウンドを跨いで楽曲の再生を継続します。

　・[Manual]セクションのFeedback項目が1であるとき、
　　Loop項目が-1に設定された楽曲の再生終了時、自動的に対象変数に0をセットします。
　　また、FadeOut項目が有効な楽曲のフェードアウト終了時、自動的に対象変数に-1をセットします。

　・フェードアウト処理中の対象変数への操作は基本的にすべて無視されます。
　　例：フェードアウト処理中に対象変数を1->0->1と変更しても、間にある0は感知されず、
　　　　フェードアウト処理終了後に再度設定しなおすまで楽曲の再生はされない。

　・フェードアウト処理中にラウンドが変わった場合、原則即座に再生停止を試みますが、
　　MUGENとAudioPlayの内部FPSのズレや、再生の停止処理にかかる時間などにより
　　数Fほど次のラウンドにもフェードアウト中の音声が再生される可能性があります。
　　その間の対象変数への操作は上記の仕様によって無視されてしまうため、
　　ラウンド開始直後に音声の再生を行う場合には[Manual]セクションのFeedback項目を
　　1に設定し、対象変数へのフィードバックを受けてから対象変数への操作を
　　開始することを推奨します。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

### 更新履歴 ###

2022/03/28: ver_1.00公開
2022/05/04: ver_1.01公開
            ・１キャラ内に複数のAudioPlay.defが配置されることを
              考慮していなかったことに起因する不具合を修正
            ・数点の誤字を修正
            ・AudioPlay.def内の[AudioPlay]のdef項目を必要としないよう変更
            ・AudioPlay.defファイルの名前を変更可能に変更
2022/12/27: ver_1.02公開
            ・DLLCALL内のエラー処理コードが正常に動かなかった不具合を修正
            ・コマンドラインからの起動などの特定の条件下で、キャラ読み込み処理中に
              異常終了を引き起こす不具合を修正

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
